home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / tek / visual / getattrs.c < prev    next >
C/C++ Source or Header  |  2001-05-12  |  2KB  |  73 lines

  1.  
  2. #include "tek/visual.h"
  3. #include "tek/debug.h"
  4. #include "tek/kn/visual.h"
  5.  
  6. /* 
  7. **    TEKlib
  8. **    (C) 2001 TEK neoscientists
  9. **    all rights reserved.
  10. **
  11. **    TUINT numattrs = TVGetAttrs(TAPTR visual, TTAGITEM *tags)
  12. **
  13. **    get visual attributes
  14. */
  15.  
  16. TUINT TVGetAttrs(TAPTR visual, TTAGITEM *tags)
  17. {
  18.     TVISUAL *v = (TVISUAL *) visual;
  19.     TDRAWMSG *msg;
  20.  
  21.     for (;;)
  22.     {
  23.         if ((msg = TGetMsg(v->asyncport)))
  24.         {
  25.             TAPTR attp;
  26.             TUINT numatt = 0;
  27.             
  28.             msg->jobcode = TVJOB_GETATTRS;
  29.  
  30.             TSendMsg(v->parenttask, TTaskPort(v->task), msg);            
  31.  
  32.     
  33.             if ((attp = TGetTagValue(TVisual_PixWidth, TNULL, tags)))
  34.             {
  35.                 *((TINT *) attp) = msg->op.attrs.pixwidth;
  36.                 numatt++;
  37.             }
  38.             if ((attp = TGetTagValue(TVisual_PixHeight, TNULL, tags)))
  39.             {
  40.                 *((TINT *) attp) = msg->op.attrs.pixheight;
  41.                 numatt++;
  42.             }
  43.             if ((attp = TGetTagValue(TVisual_FontWidth, TNULL, tags)))
  44.             {
  45.                 *((TINT *) attp) = msg->op.attrs.fontwidth;
  46.                 numatt++;
  47.             }
  48.             if ((attp = TGetTagValue(TVisual_FontHeight, TNULL, tags)))
  49.             {
  50.                 *((TINT *) attp) = msg->op.attrs.fontheight;
  51.                 numatt++;
  52.             }
  53.             if ((attp = TGetTagValue(TVisual_TextWidth, TNULL, tags)))
  54.             {
  55.                 *((TINT *) attp) = msg->op.attrs.textwidth;
  56.                 numatt++;
  57.             }
  58.             if ((attp = TGetTagValue(TVisual_TextHeight, TNULL, tags)))
  59.             {
  60.                 *((TINT *) attp) = msg->op.attrs.textheight;
  61.                 numatt++;
  62.             }
  63.  
  64.             kn_lock(&v->asyncport->lock);
  65.             TAddTail(&v->asyncport->msglist, (TNODE *) (((TMSG *) msg) - 1));
  66.             kn_unlock(&v->asyncport->lock);
  67.  
  68.             return numatt;
  69.         }
  70.         TWaitPort(v->asyncport);        /* wait for free node */
  71.     }
  72. }
  73.